package com.chaos.eurekaproducer.leetCode;

/**
 * @author liaopeng
 * @title: Offer16
 * @projectName eureka-producer
 * @description:
 * 输入数字 n，按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3，则打印出 1、2、3 一直到最大的 3 位数 999。
 *
 * 示例 1:
 *
 * 输入: n = 1
 * 输出: [1,2,3,4,5,6,7,8,9]
 *
 *
 * @date 2021/6/9下午5:09
 */
public class Offer17 {

    /**
     * 方式一：使用字符串拼接的方式拿到最大值
     * @param n
     * @return
     */
    public static int[] printNums(int n){
        String max="1";
        while (n>0){
            max = max + "0";
            n--;
        }
        int maxNum = Integer.parseInt(max)-1;
        int[] ints = new int[maxNum];
        for (int i = 0; i < maxNum; i++) {
             ints[i]=i+1;
        }
        return ints;
    }

    /**
     * 方式二：使用pow方法，拿到最大值
     * @param n
     * @return
     */
    public static int[] printNums2(int n){
        int maxNum = (int) Math.pow(10, n) - 1;
        int[] ints = new int[maxNum];
        for (int i = 0; i < maxNum; i++) {
            ints[i]=i+1;
        }
        return ints;
    }

    public static void main(String[] args) {
        int[] ints = printNums2(3);
        for (int i = 0; i < ints.length; i++) {
            int anInt = ints[i];
            System.out.println(anInt);
        }
    }
}
